home *** CD-ROM | disk | FTP | other *** search
- // Copyright (C) 1997-2002 Alias|Wavefront,
- // a division of Silicon Graphics Limited.
- //
- // The information in this file is provided for the exclusive use of the
- // licensees of Alias|Wavefront. Such users have the right to use, modify,
- // and incorporate this code into other products for purposes authorized
- // by the Alias|Wavefront license agreement, without fee.
- //
- // ALIAS|WAVEFRONT DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
- // INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
- // EVENT SHALL ALIAS|WAVEFRONT BE LIABLE FOR ANY SPECIAL, INDIRECT OR
- // CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
- // DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
- // TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
- // PERFORMANCE OF THIS SOFTWARE.
- //
- //
- // Alias|Wavefront Script File
- // MODIFY THIS AT YOUR OWN RISK
- //
- // Creation Date: November 12 2000
- //
- // Procedure Name:
- // incrementalSaveProcessPath
- //
- // Description:
- // Takes the save file path and returns the information that we'll need
- // to do the incremental save.
- //
- // Input Arguments:
- // path to split
- //
- // Return Value:
- // String array where elements are as follows:
- // 0 - scene name
- // 1 - scene path
- // 2 - scene name extension
- // 3 - scene prefix
- // 4 - version string
- // 5 - increment dir name
- //
- global proc string[] incrementalSaveProcessPath( string $scenePath )
- {
- string $result[];
-
- // Separate the full filename into path and name (eg. "C:/maya/projects/scenes/" and "myScene.mb")
- //
- string $scenePath = `file -q -sceneName`;
- string $sceneName = `match "[^/]+$" $scenePath`;
- $scenePath = `substring $scenePath 1 (size($scenePath) - size($sceneName))`;
-
- string $sceneExtension = `match "[.][^.]*$" $sceneName`;
- if($sceneExtension == `match "[.][0-9]+" $sceneExtension`) {
- $sceneExtension = "";
- }
-
- string $fullScenePrefix = `substring $sceneName 1 (size($sceneName) - size($sceneExtension))`;
-
- string $currVersionString = `match "[.][0-9]+$" $fullScenePrefix`;
- $currVersionString = `match "[0-9]+" $currVersionString`;
-
- // Find the extension and "prefix" of the sceneName. We may use the "fullScenePrefix" later.
- // For example, we would want "myScene4.screen2.0001.mb" to give us "myScene4.screen2"
- //
- string $sceneNamePrefix = $fullScenePrefix;
-
- if($currVersionString != "") {
- $sceneNamePrefix = `substring $sceneNamePrefix 1
- (size($sceneNamePrefix) - size($currVersionString) - 1)`;
- }
-
- string $incrementDirName = "incrementalSave/" + $sceneNamePrefix + $sceneExtension + "/";
- string $lastDirectoryName = `match "incrementalSave/[^/]+/$" $scenePath`;
-
- if($lastDirectoryName == $incrementDirName) {
- // The directory-name for storing older increments is already at the end of the
- // path for the current scene, so we can assume that the user is saving changes to
- // an older increment. We will want to save these changes to the original scene name.
- //
- $scenePath = `substring $scenePath 1 (size($scenePath) - size($lastDirectoryName))`;
- } else {
- // There is the possibility of users naming a scene so that it ends in
- // a number (myOriginalScene.4.ma), just like increments are.
- // If this happens, the previous code will have been fooled into thinking that
- // the number was not part of the scene name. However, if we know that we're
- // not inside the increments directory, then we know that the full original
- // scene prefix should be used (not the one with the number trimmed off!).
- //
- $sceneNamePrefix = $fullScenePrefix;
- $incrementDirName = "incrementalSave/" + $sceneNamePrefix + $sceneExtension;
- }
-
- $result[0] = $scenePath;
- $result[1] = $sceneName;
- $result[2] = $sceneExtension;
- $result[3] = $sceneNamePrefix;
- $result[4] = $currVersionString;
- $result[5] = $incrementDirName;
-
- return $result;
- }